home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / os2 / adaptor.zip / ADAPT.ZIP / adaptor / examples / purdue / prob08.fcm < prev    next >
Text File  |  1993-06-26  |  2KB  |  85 lines

  1.       PROGRAM PROB08
  2. C
  3. C     PROBLEM 08
  4. C
  5. C  REFERENCE:  PROBLEMS TO TEST PARALLEL AND VECTOR LANGUAGES
  6. C              CSD-TR 516, COMPUTER SCIENCE, PURDUE UNIVERSITY
  7. C              JOHN R. RICE, MAY 1, 1985
  8. C
  9. C              REVISED BY JOHN R. RICE AND J. JING, OCT. 1, 1990
  10. C
  11. C
  12. C      *************************************************
  13. C      *      Adapted for FORTRAN D benchmarking       *
  14. C      *    by  T. HAUPT  (haupt@sccs.npac.syr.edu)    *
  15. C      *                                               *
  16. C      *    Northeast Parallel Architectures Center    *
  17. C      *   at Syracuse University, Syracuse, NY, USA   *
  18. C      *************************************************
  19. C
  20. C
  21. C       VERSION SIMD/CM2-1.00
  22. C       ==================================================
  23. C
  24.       INCLUDE '/usr/include/cm/paris-configuration-fort.h'
  25.       INTEGER KASES,NK,MK
  26.       PARAMETER (KASES=4)
  27.       INTEGER N(KASES),M(KASES)
  28. cmf$  layout N(:serial)
  29. cmf$  layout M(:serial)
  30.       DATA N / 8192,65536,131072,65536/
  31.       DATA M /3,4,4,8/
  32.       REAL SUMD
  33.  
  34.       DO 50 K = 1, KASES
  35.  
  36.       CALL CM_TIMER_CLEAR(0)
  37.       CALL CM_TIMER_START(0)
  38.       DO MANY=1,150
  39.  
  40.       NK=N(K)
  41.       MK=M(K)
  42.       CALL DOIT(NK,MK,SUMD)
  43.       ENDDO
  44.       CALL CM_TIMER_STOP(0)
  45.  
  46.       PRINT *,'PROBLEM 08 WITH N,M  =',NK,MK
  47.       PRINT *,'GIVES SUM OF DIFFERENCES = ',SUMD
  48.  
  49.  
  50.       CALL CM_TIMER_PRINT(0)
  51.  
  52.    50 CONTINUE
  53.       STOP
  54.       END
  55.  
  56.       SUBROUTINE DOIT(NK,MK,SUMD)
  57.       INTEGER NK,MK
  58.       REAL SUMD
  59.       INTEGER J,N
  60.       REAL, ARRAY(NK)    :: X, X1
  61.       REAL, ARRAY(MK,NK) :: DIFF
  62.       REAL, ARRAY(NK)    :: DIFF_ROW
  63. CMF$  LAYOUT DIFF(:SERIAL,:NEWS)
  64.  
  65.       X=0.2*[1:NK]+0.01*COS(REAL([1:NK]))
  66.       DIFF=0
  67. c     DIFF(1,1:NK)=SIN(X)
  68.       DIFF(1,1:NK)=SIN(X(1:NK))
  69.  
  70.       X1 = X
  71.       N=NK
  72.       DO J=2,MK
  73.       N=N-1
  74.         DIFF_ROW (1:NK) = DIFF(J-1,1:NK)
  75.         DIFF_ROW = cshift (DIFF_ROW, 1, 1)
  76. c       DIFF_ROW (1:N) = DIFF_ROW (2:N+1) - DIFF_ROW (1:N)
  77.         X1 = cshift (X1, 1, 1)
  78.         DIFF(J,1:N)= (DIFF_ROW (1:N) - DIFF(J-1,1:N)) / (X1(1:N) - X(1:N))
  79.       ENDDO
  80.  
  81.       SUMD=SUM(DIFF(2:MK,1:NK))
  82.  
  83.  
  84.       END
  85.